package mr.zhang.servlet;

import mr.zhang.service.impl.WeChatServiceImpl;
import mr.zhang.weixin.wechatutil.SignUtil;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;



/**
 * 核心请求处理类
 * 
 * @author Jerry
 * @date 2013-05-18
 */
public class CoreServlet extends HttpServlet {


	private String weChatService ;

	public void setWeChatService(String weChatService) {
		this.weChatService = weChatService;
	}

	private static final long serialVersionUID = 4440739483644821986L;

	/**
	 * 确认请求来自微信服务器
	 */
	public void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		// 微信加密签名
		String signature = request.getParameter("signature");
		// 时间戳
		String timestamp = request.getParameter("timestamp");
		// 随机数
		String nonce = request.getParameter("nonce");
		// 随机字符串
		String echostr = request.getParameter("echostr");


		System.out.println("----------coreServlet method Get---------------" + signature
				+ "-------" + timestamp +"\t" + nonce +"\t"+ echostr);

		PrintWriter out = response.getWriter();
		// 通过检验signature对请求进行校验，若校验成功则原样返回echostr，表示接入成功，否则接入失败
		if (SignUtil.checkSignature(signature, timestamp, nonce)) {
			out.print(echostr);
		}

		out.close();
		out = null;



	}

	/**
	 * 处理微信服务器发来的消息
	 */
	public void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		// 将请求、响应的编码均设置为UTF-8（防止中文乱码）
		request.setCharacterEncoding("UTF-8");
		response.setCharacterEncoding("UTF-8");



		// 调用核心业务类接收消息、处理消息
		//String respMessage = CoreService.getWeChatMenu(request);

		WeChatServiceImpl weChatService = new WeChatServiceImpl();
		String respMessage = weChatService.processRequest(request);

		System.out.println("==================我是出自serclet 的分割线=================");
		System.out.println(respMessage);

		// 响应消息
		PrintWriter out = response.getWriter();

		out.print(respMessage);

		out.close();


	}




}